import './mount';   // 挂载拓展
import { EmpireProto } from './bot/EmpireProto';
import { BotWrapper, runErrorMapped } from './utils/wrapper';
import { inInterval } from './utils/functions/inInterval';
import { sandbox_after, sandbox_before } from './sandbox';

declare global {
    var Empire: EmpireProto;
}

export const loop = BotWrapper.wrapLoop(() => {
    // 初始化 Empire ========================================
    if (!global.Empire) {
        global.Empire = new EmpireProto();
    }
    // 刷新或重构 Empire =====================================
    if (global.Empire.needsRebuilding || inInterval(IntervalLength.short)) {
        Empire.build();
    }
    else {
        Empire.refresh();
    }
    // 运行 Empire ==========================================
    runErrorMapped(sandbox_before);
    Empire.run();
    runErrorMapped(sandbox_after);
    // Clean up ============================================
    Empire.cleanUp();
});